<?php

class Maestras_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function buscaMaestras($ind, $valores, $opc = "1") {
        $query = "";
        switch ($ind) {
            case "EMPRESA":
                $sql = "select usuarioId from empresas where empresaNit = '{$valores["nit"]}'";
                $query = $this->db->query($sql);
                break;
            case "INSTITUCIÓN":
                $sql = "select usuarioId from instituciones where institucionNit = '{$valores["nit"]}'";
                $query = $this->db->query($sql);
                break;
            case "USUARIOS":
                $sql = "select * from usuarios where usuarioId = '$valores'";
                $query = $this->db->query($sql);
                break;
            case "PERSONA":
                $sql = "select usuarioId from personas where personaDocumento= '{$valores["nit"]}' and personaTipoDocumento = '{$valores["tip"]}'";
                $query = $this->db->query($sql);
                break;
            default:
                break;
        }
        switch ($opc) {
            case "1": return $query;
                break;
            case "2": //Solicita el usuario
                $obj = $query->result();
                return $this->buscaMaestras("USUARIOS", $obj[0]->usuarioId);
            default:
                break;
        }
    }

    public function transaccion() {
        //Incremento el numero de la transaccion
        $sql = "update sistemas set transaccion = transaccion + 1,fechaSis = now() ";
        $query = $this->db->query($sql);
        //Obtiene el número de la transaccion
        $sql = "select transaccion from sistemas";
        $query = $this->db->query($sql);
        if ($query->num_rows() <= 0) {
            $sql = "insert into sistemas(transaccion,fechaSis) values(1,now())";
            $this->db->query($sql);
            $sql = "select transaccion from sistemas";
            $query = $this->db->query($sql);
        }
        $obj = $query->result();
        return $obj[0]->transaccion;
    }

//fin public function transaccion() {

    public function tipFormacion() {
        $sql = "select * from tipformacion order by tipFormacionId";
        return $this->db->query($sql);
    }

    public function tipDiscapacidad() {
        $sql = "select * from tipdiscapacidades order by tipDiscapacidad";
        return $this->db->query($sql);
        ;
    }

    public function tipayudastecnicas($opc, $cla = null, $ayuda = null) {
        switch ($opc) {
            case 'C':
                $sql = "select tipAyudaTecnicaId,tipAyudaTecnicaClase from tipayudastecnicas where tipAyudaTecnicaEstado = 'A' GROUP by tipAyudaTecnicaClase order by tipAyudaTecnicaClase";
                return $this->db->query($sql);
                ;
                break;
            case 'T':
                $sql = "select a.tipAyudaTecnicaId,a.tipAyudaTecnicaClase,a.tipAyudaTecnicaDesc from tipayudastecnicas a
                    inner join tipayudastecnicas b on b.tipAyudaTecnicaClase = a.tipAyudaTecnicaClase and b.tipAyudaTecnicaId = '$cla'
                    where a.tipAyudaTecnicaEstado = 'A'  order by a.tipAyudaTecnicaDesc";
                return $this->db->query($sql);
                ;
                break;
            default:
                break;
        }
    }

    public function tipAdministradoras() {
        $sql = "select * from tipadministradoras order by tipAdministradoraDesc";
        return $this->db->query($sql);
    }

    public function Administradoras($tip) {
        $sql = "select administradoraNombre,administradoraId from administradoras where tipAdministradoraTip = '$tip' and administradoraEstado = 'A' order by administradoraNombre";
        return $this->db->query($sql);
    }

    public function nombreUsuario($rol, $usuario) {
        switch ($rol) {
            case '1': //Administrador
                $sql = "select administradorId,administradorNombres,administradorApellidos from administrador";
                $obj = $this->db->query($sql)->result();
                return "ADMINISTRADOR" . "|" . $obj[0]->administradorId . "|" . $obj[0]->administradorNombres . " " . $obj[0]->administradorApellidos;
                break;
            case '2': //Empresa
                $sql = "select empresaId,empresaRazon from empresas where usuarioId = '$usuario'";
                $obj = $this->db->query($sql)->result();
                return "EMPRESA" . "|" . $obj[0]->empresaId . "|" . $obj[0]->empresaRazon;
                break;
            case '3': //Institucion
                $sql = "select institucionId,institucionRazon from instituciones where usuarioId = '$usuario'";
                $obj = $this->db->query($sql)->result();
                return "INSTITUCIÓN" . "|" . $obj[0]->institucionId . "|" . $obj[0]->institucionRazon;
                break;
            case '4': //Persona
                $sql = "select personasId,personaNombres,personaApellidos from personas where usuarioId = '$usuario'";
                $obj = $this->db->query($sql)->result();
                return "PERSONA" . "|" . $obj[0]->personasId . "|" . $obj[0]->personaNombres . " " . $obj[0]->personaApellidos;
                break;
        }
    }

    public function programas($rol, $usuario) {
        $sql = "select prog.programaId,prog.programaNombre,prog.programaControlador,prog.programaDesc,cate.categoriaNombre,cate.categoriaDesc from permisos per ";
        $sql .= "inner join programas prog on prog.programaId = per.programaId and programaEstado = 'A' ";
        $sql .= "inner join categorias cate on cate.categoriaId = prog.categoriaId and cate.categoriaEstado = 'A' where per.rolId = '$rol' and per.permisoEstado = 'A' order by cate.categoriaOrden, prog.programaOrden,prog.programaNombre";
        return $this->db->query($sql);
    }

    public function extraeMaestras($ind, $opc, $valor, $valor1 = null) {
        switch ($opc) {
            case 'usuarioId': //con base en el usuarioId
                switch ($ind) {
                    case 'administador':
                        $sql = "select admin.*,usr.usuario from administrador admin ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = admin.usuarioId where admin.usuarioId = '$valor'";
                        return $this->db->query($sql);
                        break;
                    case 'empresas':
                        $sql = "select emp.*,usr.usuario,dep.dptCod from empresas emp ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = emp.usuarioId ";
                        $sql .= "inner join ciudades ciu on ciu.ciudadId = emp.ciudadId ";
                        $sql .= "inner join departamentos dep on dep.dptCod = ciu.dptCod where emp.usuarioId = '$valor'";
                        return $this->db->query($sql);
                        break;
                    case 'instituciones':
                        $sql = "select insti.*,usr.usuario,dep.dptCod from instituciones insti ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = insti.usuarioId ";
                        $sql .= "inner join ciudades ciu on ciu.ciudadId = insti.ciudadId ";
                        $sql .= "inner join departamentos dep on dep.dptCod = ciu.dptCod where insti.usuarioId = '$valor'";
                        return $this->db->query($sql);
                        break;
                    case 'personas':
                        $sql = "select perso.*,usr.usuario,dep.dptCod from personas perso ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = perso.usuarioId ";
                        $sql .= "inner join ciudades ciu on ciu.ciudadId = perso.ciudadId ";
                        $sql .= "inner join departamentos dep on dep.dptCod = ciu.dptCod where perso.usuarioId = '$valor'";
                        $query = $this->db->query($sql);
                        $user = $query->result();
                        $this->cargaTemporal('usuariosEdita', $valor1, $user[0]->personasId);
                        return $query;
                        break;
                } //fin switch ($ind) {
                break;
            case 'tableId':
                switch ($ind) {
                    case 'personas':
                        $sql = "select perso.*,usr.usuario,dep.dptCod from personas perso ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = perso.usuarioId ";
                        $sql .= "inner join ciudades ciu on ciu.ciudadId = perso.ciudadId ";
                        $sql .= "inner join departamentos dep on dep.dptCod = ciu.dptCod where perso.personasId = '$valor'";
                        $query = $this->db->query($sql);
                        $user = $query->result();
                        $this->cargaTemporal('usuariosEdita', $valor1, $user[0]->personasId);
                        return $query;
                        break;
                    case 'instituciones':
                        $sql = "select insti.*,usr.usuario,dep.dptCod from instituciones insti ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = insti.usuarioId ";
                        $sql .= "inner join ciudades ciu on ciu.ciudadId = insti.ciudadId ";
                        $sql .= "inner join departamentos dep on dep.dptCod = ciu.dptCod where insti.institucionId = '$valor'";
                        return $this->db->query($sql);
                        break;
                    case 'empresas':
                        $sql = "select emp.*,usr.usuario,dep.dptCod from empresas emp ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = emp.usuarioId ";
                        $sql .= "inner join ciudades ciu on ciu.ciudadId = emp.ciudadId ";
                        $sql .= "inner join departamentos dep on dep.dptCod = ciu.dptCod where emp.empresaId = '$valor'";
                        return $this->db->query($sql);
                        break;
                    case 'empresasdeSol':
                        $sql = "select emp.*,usr.usuario,dep.dptCod from solservyase sol
                            inner join empresas emp on sol.empresaId = emp.empresaId ";
                        $sql .= "inner join usuarios usr on usr.usuarioId = emp.usuarioId ";
                        $sql .= "inner join ciudades ciu on ciu.ciudadId = emp.ciudadId ";
                        $sql .= "inner join departamentos dep on dep.dptCod = ciu.dptCod where sol.solServyAseId = '$valor'";
                        return $this->db->query($sql);
                        break;
                }
        } //fin switch ($opc) {
    }

    public function cargaTemporal($opc, $transa, $val) {
        switch ($opc) {
            case 'usuariosEdita':
                //$val = numeroId de la persona
                //Ingresa la experiencia laboral
                $sql = "select * from explaboral expl
                left join tipocontratos tipc on tipc.`tipContraId` = expl.`tipContraId` where expl.personasId = '$val'";
                $query = $this->db->query($sql);
                if ($query->num_rows() > 0) {
                    foreach ($query->result() as $row) {
                        $sql = "insert into temporal(tempVarchar1,tempVarchar3,tempVarchar4,tempDate1,tempDate2,tempText1,tempVarchar2,transaccion,tempInd,tempVarchar5,tempVarchar6,tempVarchar7) values(";
                        $sql .= "'{$row->expLaboralEmpresa}','{$row->expLaboralContacto}','{$row->expLaboralTelefono}','{$row->expLaboralInicio}','{$row->expLaboralFin}','{$row->expLaboralFunciones}','{$row->expLaboralActual}','$transa','exp','{$row->expLaboralVinculacion}','{$row->expLaboralPagos}','{$row->tipContraId}-{$row->tipContraPrestaciones}')";
                        $this->db->query($sql);
                    }
                }
                //Ingresa informacion academica
                $sql = "select * from formacademicas where personasId = '$val'";
                $query = $this->db->query($sql);
                if ($query->num_rows() > 0) {
                    foreach ($query->result() as $row) {
                        $sql = "insert into temporal(tempVarchar2,tempVarchar3,tempVarchar1,tempVarchar4,tempDate1,tempDate2,tempVarchar5,transaccion,tempInd) values(";
                        $sql .= "'{$row->formAcademicaUltima}','{$row->tipFormacionId}','{$row->formAcademicaInstitucion}','{$row->formAcademicaTitulo}','{$row->formAcademicaInicio}','{$row->formAcademicaFin}','{$row->formAcademicaActual}','$transa','aca')";
                        $this->db->query($sql);
                    }
                }
                //Ingresa Discapacidades
                $sql = "select * from discapacidades where personasId = '$val'";
                $query = $this->db->query($sql);
                if ($query->num_rows() > 0) {
                    foreach ($query->result() as $row) {
                        $sql = "insert into temporal(tempText1,tempVarchar1,tempText2,transaccion,tempInd) values (";
                        $sql .= "'{$row->discapacidadDesc}','{$row->tipDiscapacidadId}','{$row->discapacidadCausa}','$transa','discapacidad')";
                        $this->db->query($sql);
                    }
                }
                //Ingresa ayudas tecnicas
                $sql = "select * from ayudastecnicas where personasId = '$val'";
                $query = $this->db->query($sql);
                if ($query->num_rows() > 0) {
                    foreach ($query->result() as $row) {
                        $sql = "insert into temporal(tempVarchar2,tempText1,transaccion,tempInd) values (";
                        $sql .= "'{$row->tipAyudaTecnicaId}','{$row->ayudaTecnicaComentario}','$transa','ayudasTecnicas')";
                        $this->db->query($sql);
                    }
                }
                //Ingresa seguridad Social
                $sql = "select admPer.*,adms.tipAdministradoraTip from adminispersona admPer inner join administradoras adms on adms.administradoraId = admPer.administradoraId where personasId = '$val'";
                $query = $this->db->query($sql);
                if ($query->num_rows() > 0) {
                    foreach ($query->result() as $row) {
                        $sql = "insert into temporal(tempInt1,tempVarchar2,tempDate1,tempDate2,tempVarchar3,tempVarchar1,transaccion,tempInd,`tempInt2`,`tempVarchar4`,`tempVarchar5`) values (";
                        $sql .= "'{$row->administradoraId}','{$row->adminPersonaContrato}','{$row->adminPersonaFecIni}','{$row->adminPersonaFecFin}','{$row->adminPersonaActual}','{$row->tipAdministradoraTip}','$transa','administraPersonas','{$row->adminPersonaTiempoPension}','{$row->adminPersonaRegimen}','{$row->adminPersonaPension}')";
                        $this->db->query($sql);
                    }
                }
                break;
            case 'cargPost':
                //$val =
                $sql = "SELECT postu.postulacionFecha,postu.postulacionesId, case when exists (select * from preseleccioninstituciones where institucionId = insti.institucionId and preseInstEstado = 'A') then 'Si' else 'No' end as postulacionPreseleccion,insti.institucionRazon,insti.institucionTelefono,insti.institucionContacto,usrIns.usuario AS inUsuario,usrPer.usuario AS perUsuario,perso.personaTipoDocumento,perso.personaDocumento,perso.personaNombres,perso.personaApellidos,perso.personaTelefono
                FROM ofertaslaborales ofer
                INNER JOIN postulaciones postu ON postu.ofertaLaboralId = ofer.ofertaLaboralId
                INNER JOIN personas perso ON perso.personasId = postu.personasId
                INNER JOIN usuarios usrPer ON usrPer.usuarioId = perso.usuarioId
                LEFT JOIN instituciones insti ON insti.institucionId = postu.institucionId
                LEFT JOIN usuarios usrIns ON usrIns.usuarioId = insti.usuarioId
                WHERE ofer.ofertaLaboralId = '{$this->input->post("ofer")}' AND postu.postulacionEstado = 'A'
                GROUP BY postu.institucionId
                HAVING postu.institucionId IS NOT NULL
                UNION
                SELECT postu.postulacionFecha,postu.postulacionesId,postu.postulacionPreseleccion,insti.institucionRazon,insti.institucionTelefono,insti.institucionContacto,usrIns.usuario AS inUsuario,usrPer.usuario AS perUsuario,perso.personaTipoDocumento,perso.personaDocumento,perso.personaNombres,perso.personaApellidos,perso.personaTelefono
                FROM ofertaslaborales ofer
                INNER JOIN postulaciones postu ON postu.ofertaLaboralId = ofer.ofertaLaboralId
                INNER JOIN personas perso ON perso.personasId = postu.personasId
                INNER JOIN usuarios usrPer ON usrPer.usuarioId = perso.usuarioId
                LEFT JOIN instituciones insti ON insti.institucionId = postu.institucionId
                LEFT JOIN usuarios usrIns ON usrIns.usuarioId = insti.usuarioId
                WHERE ofer.ofertaLaboralId = '{$this->input->post("ofer")}' AND postu.postulacionEstado = 'A'
                group by usrPer.usuario,postu.institucionId having postu.institucionId IS NULL ";
                $query = $this->db->query($sql);
                foreach ($query->result() as $row) {
                    //tempVarchar1 => Indicador si es una institucion
                    //tempVarchar2 => Nombre de la institucion o nombre de la persona según corresponda
                    $insti = (isset($row->institucionRazon)) ? $row->institucionRazon : "N/A";
                    $nombre = (isset($row->institucionRazon)) ? $row->institucionRazon : ($row->personaNombres . " " . $row->personaApellidos);
                    $sql = "insert into temporal(transaccion,tempVarchar1,tempVarchar2,tempDate1,tempVarchar3,tempInt1) values(";
                    $sql .= "'{$this->input->post("transaccion")}','$insti','$nombre','{$row->postulacionFecha}','{$row->postulacionPreseleccion}','{$row->postulacionesId}')";
                    $this->db->query($sql);
                }
                break;
            case 'cargServ':
                /* Cargas los servicios en la temporal */
                $sql = "select postu.postulacionesId,postu.postulacionPreseleccion,postu.institucionId,postu.postulacionFecha,insti.institucionRazon,insti.institucionTelefono,insti.institucionContacto,usrIns.usuario as inUsuario from solservyase sol
                        inner join postulaciones postu on postu.solServyAseId = sol.solServyAseId
                        left join instituciones insti on insti.institucionId = postu.institucionId
                        left join usuarios usrIns on usrIns.usuarioId = insti.usuarioId
                        where sol.solServyAseId = '{$this->input->post("sol")}' and postu.postulacionEstado = 'A'";
                $query = $this->db->query($sql);
                foreach ($query->result() as $row) {
                    //tempVarchar1 => Nombre de la institucion
                    //tempVarchar2 => Telefono
                    //tempVarchar3 => contacto
                    //tempVarchar4 => E-mail
                    //tempVarchar5 => Preseleccion
                    $insti = (isset($row->institucionRazon)) ? $row->institucionRazon : "N/A";
                    $tel = (isset($row->institucionTelefono)) ? $row->institucionTelefono : $row->personaTelefono;
                    $contac = (isset($row->institucionContacto)) ? $row->institucionContacto : $nombre;
                    $e_mail = (isset($row->inUsuario)) ? $row->inUsuario : $row->perUsuario;
                    $sql = "insert into temporal(transaccion,tempVarchar1,tempVarchar2,tempVarchar3,tempVarchar4,tempVarchar5,tempInt1,tempInt2,tempDate1) values(";
                    $sql .= "'{$this->input->post("transaccion")}','{$row->institucionRazon}','{$row->institucionTelefono}','{$row->institucionContacto}','{$row->inUsuario}','{$row->postulacionPreseleccion}','{$row->postulacionesId}','{$row->institucionId}','{$row->postulacionFecha}')";
                    $this->db->query($sql);
                }
                break;
        }
        return;
    }

    public function limpiaTemporal($tran) {
        $sql = "delete from temporal where transaccion = '$tran'";
        $this->db->query($sql);
    }

    public function instituciones() {
        /* Extrae todas las instituciones del sistema */
        $sql = "select * from instituciones order by `institucionRazon`";
        return $this->db->query($sql);
    }

//fin instituciones(){

    public function tipContratos() {
        /* Funcion para extraer todos los tipos de contratos */
        $sql = "select * from tipocontratos where `tipContraEstado` = 'A' order by `tipContraNombre`";
        return $this->db->query($sql);
    }

//fin public function tipContratos(){

    public function competencias() {
        /* Funcion para extraer tas las competencias */
        $sql = "select * from competencias where competenciaEstado = 'A' order by `competenciaNombre`";
        return $this->db->query($sql);
    }

//fin public function competencias(){

    public function jornadas() {
        /* Funcion para extraer tas las competencias */
        $sql = "select * from jornadas where jornadaEstado = 'A' order by `jornadaNombre`";
        return $this->db->query($sql);
    }

//fin public function competencias(){

    public function cuenServInclu($instiId) {
        /* Función para contar los servicios de inclusion que ofrece la institucion */
        $sql = "select count(*) as total from instituciones_por_serviciosinclusion where `institucionId` = '$instiId'";
        $result = $this->db->query($sql)->result();
        return $result[0]->total;
    }

//fin public function cuenServInclu($instiId){
}

?>
